package com.xinchao.job.mapper.dmp;

import com.xinchao.common.model.advertise.ProgramBottom;
import com.xinchao.common.model.advertise.ProgramInfo;
import com.xinchao.common.model.advertise.ProgramTop;
import com.xinchao.common.model.advertise.TravelDeviceDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName ProgramInfoMapper
 * @Description TOOD
 * @Author HanQinrui
 * @Date 2018/9/29 17:03
 * @Version 1.0
 **/
public interface ProgramInfoMapper {
    /**
     * 插入上屏素材信息
     * @param programTopList 上屏素材信息
     * @param cityCode 城市编码
     * @param currentTime 操作时间
     */
    void insertProgramTop(@Param("programTopList") List<ProgramTop> programTopList, @Param("cityCode") String cityCode, @Param("currentTime") Long currentTime);

    /**
     * 保存下屏素材信息
     * @param programBottomList 下屏素材信息
     * @param cityCode 城市编码
     * @param currentTime 操作时间
     */
    void insertProgramBottom(@Param("programBottomList") List<ProgramBottom> programBottomList, @Param("cityCode")String cityCode, @Param("currentTime")Long currentTime);

    /**
     * 保存节目列表
     * @param programInfoList 节目列表
     * @param cityCode 城市编码
     * @param currentTime 操作时间
     */
    void insertProgramInfo(@Param("programInfoList") List<ProgramInfo> programInfoList,
                           @Param("cityCode") String cityCode, @Param("currentTime") Long currentTime);

    /**
     * 删除上屏节目素材列表
     * @param cityCode 城市编码
     */
    void deleteProgramTopByCityCode(@Param("cityCode") String cityCode);

    /**
     * 删除下屏节目素材列表
     * @param cityCode 城市编码
     */
    void deleteProgramBottomByCityCode(@Param("cityCode")String cityCode);

    /**
     * 删除节目列表
     * @param cityCode 城市编码
     */
    void deleteProgramInfoByCityCode(@Param("cityCode")String cityCode);

    /**
     * 将该城市的上屏节目素材列表添加进历史表
     * @param cityCode 城市编码
     * @param currentTime
     */
    void insertHisProgramTop(@Param("cityCode") String cityCode, @Param("currentTime") Long currentTime);

    /**
     * 将该城市的下屏节目素材列表添加进历史表
     * @param cityCode 城市编码
     * @param currentTime
     */
    void insertHisProgramBottom(@Param("cityCode") String cityCode, @Param("currentTime") Long currentTime);

    /**
     * 将该城市的节目列表添加进历史表
     * @param cityCode 城市编码
     * @param currentTime
     */
    void insertHisProgramInfo(@Param("cityCode") String cityCode, @Param("currentTime") Long currentTime);

    /**
     * 根据机器列表查询节目列表
     * @param travelDeviceList 机器列表
     * @return
     */
    List<ProgramInfo> getProgramByTravelDeviceList(List<TravelDeviceDTO> travelDeviceList);
}
